perm filename EDIT.INI[F76,JMC] blob sn#254298 filedate 1976-12-27 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	
C00005 ENDMK
CāŠ—;

;;;Say:
(EDITCOMMAND STR (%EVALUATE (LIST 'CR (PRINB %#CE NIL))))
(EDITCOMMAND SEX (%EVALUATE (LIST 'CR (READB %#CE))))
;;;Then "FOO" to the editor will replace the CE with <FUNCTION>
;;;applied to it. "FOO-1" will replace it with the inverse.
;;;If you make up a file called EDIT.INI with these expressions in
;;;it, they will always be defined when you edit.

(DEFUN READA (U L) (COND
	((NULL U)
		(CONS (REV1 L 'ERROR) NIL)
	)
	((EQ (CAR U) 'RP)
		(CONS (REVERSE L) (CDR U))
	)
	((EQ (CAR U) 'LP)
		((LAMBDA (W) (READA (CDR W) (CONS (CAR W) L)))
(READA (CDR U) NIL))
	)
	((EQ (CAR U) 'DOT)
		((LAMBDA (W) (CONS (REV1 L (CAAR W)) (CDR W)))
(READA (CDR U) NIL))
	)
	(T
		(READA (CDR U) (CONS (CAR U) L))
	)
))

(DEFUN READB (U) (COND
	((EQ (CAR U) 'LP)
		(CAR (READA (CDR U) NIL))
	)
	(T
		(CAR U)
	)
))

(DEFUN REV1 (U V) (COND ((NULL U) V) (T (REV1 (CDR U) (CONS (CAR U) V)))))

(DEFUN PRINB (E L) (COND
	((ATOM E)
		(CONS E L)
	)
	(T
		(CONS 'LP (COND
	((NULL (CDR E))
		(PRINB (CAR E) (CONS 'RP L))
	)
	((ATOM (CDR E))
		(PRINB (CAR E) (CONS 'DOT (CONS (CDR E) (CONS 'RP L))))
	)
	(T
		(PRINB (CAR E) (CDR (PRINB (CDR E) L)))
	)
		))
	)
))